package com.hwl.demo3;

import com.hwl.demo3.component.BigTrouser;
import com.hwl.demo3.component.Sneakers;
import com.hwl.demo3.component.TShirts;
import com.hwl.demo3.service.impl.Person;

/**
 * 装饰模式
 *
 * @author sentry
 * @since 2023-02-28
 */
public class Main {

    public static void main(String[] args) {
        // 主要功能都是在 Person 类的 show 方法中，其它的都是属于装饰效果
        Person person = new Person("小菜");
        System.out.println("第一种装扮：");

        Sneakers sneakers = new Sneakers(); // 生成球鞋实例
        sneakers.decorate(person); // 球鞋装饰小菜

        BigTrouser bigTrouser = new BigTrouser(); // 生成垮裤实例
        bigTrouser.decorate(sneakers); // 垮裤装饰“有球鞋装饰的小菜”

        TShirts tShirts = new TShirts(); // 生成T恤实例
        tShirts.decorate(bigTrouser); // T恤装饰“有垮裤球鞋装饰的小菜”

        tShirts.show(); // 执行形象展示
    }
}
